Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. Cloud computing providers currently offer infrastructure as a service (IaaS) and platform as a service (PaaS). IaaS is a provision model in which equipment such as storage equipment, computing equipment, networking equipment, etc. is provided on a per use basis. PaaS is a provision model in which a computing platform and solution stack are delivered to clients as a service on a per use basis. Each of these services has the properties of elasticity (ability to deal with new nodes being added and existing nodes being removed dynamically), high availability, scalability, and linear response times.
One service that has not been successfully moved to the cloud computing model is managed data storage, which is conventionally performed by databases. Data storage is stateful, which makes data as a service (DaaS) much more challenging than any of the other categories of cloud computing. Traditional data storage uses databases such as structured query language (SQL) and not only SQL (NoSQL) databases. Databases do not scale, so they tend to run on a single machine or a few machines running in a fixed cluster. Therefore, databases are not distributed by nature. This becomes a problem in the cloud because in clouds there is no guarantee that a particular server will be available at any given time. The lack of distribution for databases hampers elasticity and high availability, two of the requirements for cloud computing services. Therefore traditional database data storage does not work for DaaS.